using System;
using CookComputing.XmlRpc;

public struct loginResponse
{
    public string authCode;
    public string loginUser;
    public string uid;
}
public struct logoutResponse
{
    public string code;
    public string message;
}
public struct miniBlogInfo
{
    public string message;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string created;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string ip;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string clientIdentify;
}
public struct userInfo
{
    public string uId;
    public string handle;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string action;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string realName;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string realNameChecked;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string spaceName;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string gender;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string email;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string qq;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string msn;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string birthday;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string bloodType;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string relationshipStatus;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string birthProvince;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string birthCity;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string resideProvince;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string resideCity;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string viewNum;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string friendNum;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string myStatus;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string lastActivity;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string created;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string credit;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string isUploadAvatar;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string homepagePrivacy;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string profilePrivacy;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string friendListPrivacy;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string avatarMiddle;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string avatarSmall;
    [XmlRpcMissingMapping(MappingAction.Ignore)]
    public string avatarBig;
}
public struct notificationInfo
{
    public struct message
    {
        public string unread;
        public string mostRecent;
    }
    public struct notification
    {
        public string unread;
        public string mostRecent;
    }
    public struct friendRequest
    {
        public string[] uIds;
        public string mostRecent;
    }
}

public interface IuchomeAPI : IXmlRpcProxy
{
    [XmlRpcMethod("user.login")]
    loginResponse login(string uname, string pwd);

    [XmlRpcMethod("user.logout")]
    logoutResponse logout(string auth);

    [XmlRpcMethod("miniBlog.get")]
    miniBlogInfo[] miniBlog_get(string auth, int num);

    [XmlRpcMethod("miniBlog.post")]
    int miniBlog_post(string auth, string message, string clientIdentify, string ip);

    [XmlRpcMethod("user.getInfo")]
    userInfo user_getInfo(string auth, string uid);

    [XmlRpcMethod("notification.get")]
    notificationInfo notification_get(string auth);
}